﻿Imports Sistema_InformacionNaviera.BC
Imports Sistema_InformacionNaviera.BE
Imports Sistema_InformacionNavier.UTIL
Imports System.Drawing

Public Class AdministrarCliente
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            CargarCombo("TD", cboTipoDoc)
            CargarCombo("TE", cboTipoCli)
            CargarCombo("EE", cboEjecVtaI)
            CargarCombo("EE", cboEjecVtaE)
            CargarCombo("EE", cboCustSerI)
            CargarCombo("EE", cboCustSerE)
            CargarUbigeo("", 0, cboPais)

            sTab.ActiveTabIndex = 0
            spLimpiaControl()
            txtCodCli.Enabled = True : txtNroDoc.Enabled = True : cboTipoDoc.Enabled = True
            If Session("TipoEvento") = 0 Then
                lblAdmCli.Text = "Nuevo Cliente"
                txtCodCli.Text = "" : cboTipoDoc.SelectedIndex = 0 : txtNroDoc.Text = ""
            Else
                lblAdmCli.Text = "Modificar Cliente"
                txtCodCli.Text = Session("Codigo")
                spListaEntidad()
                txtCodCli.Enabled = False : txtNroDoc.Enabled = False : cboTipoDoc.Enabled = False
            End If
        End If 
    End Sub

    Sub spLimpiaControl()
        txtCodOscar.Text = "" : txtRSoc.Text = "" : txtNomCom.Text = ""
        txtAniv.Text = "" : ChkExtranjero.Checked = False : ChkCliente.Checked = False : ChkVigente.Checked = False : txtObs.Text = ""
        cboTipoCli.SelectedIndex = 0 : chkImpo.Checked = False : chkExpo.Checked = False : optEstaImpo.Items(0).Value = False
        optEstaImpo.Items(1).Value = False : optEstaExpo.Items(0).Value = False : optEstaExpo.Items(1).Value = False
        cboEjecVtaI.SelectedIndex = 0 : cboCustSerI.SelectedIndex = 0 : cboEjecVtaE.SelectedIndex = 0 : cboCustSerE.SelectedIndex = 0
        txtOfPrin.Text = "" : cboPais.SelectedIndex = 0 : cboDpto.SelectedIndex = 0 : cboProvincia.SelectedIndex = 0
        txtNroTelef.Text = "" : txtFax.Text = "" : txtDomFis.Text = "" : txtIniAct.Text = "" : optCondDom.Items(0).Value = False
        optCondDom.Items(1).Value = False : optTPer.Items(0).Value = False : optTPer.Items(1).Value = False
    End Sub

    Public Sub CargarCombo(ByVal sTipo As String, cbo As DropDownList)
        Dim listGeneralBE As List(Of GeneralBE) = New List(Of GeneralBE)
        Dim objGeneralBC As GeneralBC = New GeneralBC()

        Dim objUnidadSeleccione As GeneralBE = New GeneralBE
        objUnidadSeleccione.Codigo = 0
        objUnidadSeleccione.Descripcion = "[Seleccione]"
        listGeneralBE.Add(objUnidadSeleccione)
        objUnidadSeleccione.Codigo = sTipo

        listGeneralBE.AddRange(objGeneralBC.ListadoGeneral(objUnidadSeleccione))

        cbo.DataSource = listGeneralBE
        cbo.DataValueField = "Codigo"
        cbo.DataTextField = "Descripcion"
        cbo.DataBind()

    End Sub

    Sub spListaEntidad()
        Dim lstEntidadBE As List(Of EntidadesBE) = New List(Of EntidadesBE)
        Dim objEntidadBE As EntidadesBE = New EntidadesBE
        Dim objEntidadBC As EntidadesBC = New EntidadesBC()
        objEntidadBE.Codigo = txtCodCli.Text.Trim
        lstEntidadBE = objEntidadBC.ListaEntidadesModificar(objEntidadBE)
        If lstEntidadBE.Count > 0 Then
            txtCodCli.Text = lstEntidadBE(0).Codigo : txtCodOscar.Text = lstEntidadBE(0).CodOsc
            cboTipoDoc.SelectedValue = lstEntidadBE(0).TDocu : txtNroDoc.Text = lstEntidadBE(0).NDocu
            txtRSoc.Text = lstEntidadBE(0).Descripcion : txtNomCom.Text = lstEntidadBE(0).NomCom
            txtAniv.Text = lstEntidadBE(0).FecAni : ChkExtranjero.Checked = lstEntidadBE(0).Extranjero
            ChkCliente.Checked = lstEntidadBE(0).Cliente : ChkVigente.Checked = lstEntidadBE(0).Estado
            txtObs.Text = lstEntidadBE(0).Observacion : cboTipoCli.SelectedValue = lstEntidadBE(0).TipCliente
            chkImpo.Checked = lstEntidadBE(0).MovImp : chkExpo.Checked = lstEntidadBE(0).MovExp
            If lstEntidadBE(0).Actividad.Trim = "A" Then
                chkImpo.Checked = True : chkExpo.Checked = True
            Else
                chkImpo.Checked = IIf(lstEntidadBE(0).Actividad.Trim = "I", True, False)
                chkExpo.Checked = Not chkImpo.Checked
            End If
            If lstEntidadBE(0).MovImp = 1 Then
                optEstaImpo.Items(0).Selected = True : optEstaImpo.Items(1).Selected = False
            Else
                optEstaImpo.Items(0).Selected = False : optEstaImpo.Items(1).Selected = True
            End If
            If lstEntidadBE(0).MovExp = 1 Then
                optEstaExpo.Items(0).Selected = True : optEstaExpo.Items(1).Selected = False
            Else
                optEstaExpo.Items(0).Selected = False : optEstaExpo.Items(1).Selected = True
            End If
            cboEjecVtaI.SelectedValue = lstEntidadBE(0).UEjeComercialI : cboCustSerI.SelectedValue = lstEntidadBE(0).UCusComercialI
            cboEjecVtaE.SelectedValue = lstEntidadBE(0).UEjeComercialE : cboCustSerE.SelectedValue = lstEntidadBE(0).UCusComercialE
            txtOfPrin.Text = lstEntidadBE(0).Direccion
            cboPais.SelectedValue = lstEntidadBE(0).Pais.Trim
            If cboPais.SelectedValue <> "" And cboPais.SelectedValue <> "0" Then
                CargarUbigeo(cboPais.SelectedValue, 1, cboDpto)
                If cboDpto.Items.Count > 0 And lstEntidadBE(0).Dpto.Trim <> "0" Then
                    cboDpto.SelectedValue = lstEntidadBE(0).Dpto
                    If cboDpto.SelectedValue <> "" Then
                        CargarUbigeo(cboDpto.SelectedValue, 2, cboProvincia)
                        If cboProvincia.Items.Count > 0 Then
                            cboProvincia.SelectedValue = lstEntidadBE(0).Prov
                        End If
                    End If
                End If
            End If
            txtNroTelef.Text = lstEntidadBE(0).Telf : txtFax.Text = lstEntidadBE(0).Fax : txtDomFis.Text = lstEntidadBE(0).DFiscal
            txtIniAct.Text = lstEntidadBE(0).FIniActividad

            If lstEntidadBE(0).CondicioFiscal = 1 Then
                optCondDom.Items(0).Selected = True : optCondDom.Items(1).Selected = False
            Else
                optCondDom.Items(0).Selected = False : optCondDom.Items(1).Selected = True
            End If
            If lstEntidadBE(0).Persona = 1 Then
                optTPer.Items(0).Selected = True : optTPer.Items(1).Selected = False
            Else
                optTPer.Items(0).Selected = False : optTPer.Items(1).Selected = True
            End If
            txtNroTelef.Text = lstEntidadBE(0).Telf : txtFax.Text = lstEntidadBE(0).Fax : txtDomFis.Text = lstEntidadBE(0).DFiscal
            txtCodOscar.Text = lstEntidadBE(0).CodOsc
        End If
    End Sub

    Sub CargarUbigeo(sPar As String, iTipo As Integer, cbo As DropDownList)
        Dim listUbigeoBE As List(Of UbigeoBE) = New List(Of UbigeoBE)
        Dim objUbigeoBC As UbigeoBC = New UbigeoBC()

        Dim objUnidadSeleccione As UbigeoBE = New UbigeoBE
        If iTipo = 0 Then 'pais
            objUnidadSeleccione.CodPai = 0
            objUnidadSeleccione.DesPai = "[Seleccione]"
        ElseIf iTipo = 1 Then 'departamento
            objUnidadSeleccione.CodDpto = 0
            objUnidadSeleccione.DesDpto = "[Seleccione]"
        ElseIf iTipo = 2 Then 'provincia
            objUnidadSeleccione.CodProv = 0
            objUnidadSeleccione.DesProv = "[Seleccione]"
        End If

        If iTipo = 1 Then 'departamento
            objUnidadSeleccione.CodPai = sPar
        ElseIf iTipo = 2 Then 'provincia
            objUnidadSeleccione.CodDpto = sPar
        End If

        listUbigeoBE.Add(objUnidadSeleccione)
        If iTipo = 0 Then
            listUbigeoBE.AddRange(objUbigeoBC.ListaPaís())
        ElseIf iTipo = 1 Then 'departamento
            listUbigeoBE.AddRange(objUbigeoBC.ListaDpto(objUnidadSeleccione))
        ElseIf iTipo = 2 Then 'provincia
            listUbigeoBE.AddRange(objUbigeoBC.ListaProv(objUnidadSeleccione))
        End If

        cbo.DataSource = listUbigeoBE
        If iTipo = 0 Then
            cbo.DataValueField = "CodPai"
            cbo.DataTextField = "DesPai"
        ElseIf iTipo = 1 Then
            cbo.DataValueField = "CodDpto"
            cbo.DataTextField = "DesDpto"
        ElseIf iTipo = 2 Then
            cbo.DataValueField = "CodProv"
            cbo.DataTextField = "DesProv"
        End If
        cbo.DataBind()
    End Sub

    Protected Sub cboDpto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboDpto.SelectedIndexChanged
        If cboDpto.Items.Count <= 0 Then
            Exit Sub
        End If
        If cboDpto.SelectedIndex > 0 Then
            CargarUbigeo(cboDpto.SelectedValue, 2, cboProvincia)
        End If
    End Sub 

    Protected Sub cboPais_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboPais.SelectedIndexChanged
        If cboPais.Items.Count <= 0 Then
            Exit Sub
        End If
        If cboPais.SelectedIndex > 0 Then
            CargarUbigeo(cboPais.SelectedValue, 1, cboDpto)
        End If
    End Sub
     

    Function spValidaCampos() As Boolean
        Dim bValido As Boolean = True

        If txtCodCli.Text.Count = 0 Then
            MsgBox("Debe ingresar un código válido.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If cboTipoDoc.SelectedIndex < 1 Then
            MsgBox("Seleccione un tipo de documento válido", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If ChkExtranjero.Checked Then
            If cboTipoDoc.SelectedValue <> "CE" Then
                MsgBox("El tipo de documento no es válido", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If
            
            If Len(txtNroDoc.Text) > 20 Then
                MsgBox("Debe tener como máximo 20 caracteres.", vbInformation, Me.Title)
                bValido = False
                Return bValido
            End If
        Else
            If cboTipoDoc.SelectedValue = "CE" Then
                MsgBox("El tipo de documento seleccionado no es válido.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

            If Not IsNumeric(txtNroDoc.Text.Trim) Then
                MsgBox("El nro. de documento ingresado no es válido.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

            If cboTipoDoc.SelectedValue = "DNI" Then 'DNI
                If Len(txtNroDoc.Text) <> 7 Then
                    MsgBox("El nro. de documento debe tener 7 caracteres.", vbInformation, Me.Title)
                    bValido = False
                    Return bValido
                    Exit Function
                End If
            ElseIf cboTipoDoc.SelectedValue = "RUC" Then 'RUC  
                If Len(txtNroDoc.Text) = 11 Then
                    MsgBox("El nro. de documento debe tener 11 caracteres.", vbInformation, Me.Title)
                    bValido = False
                    Return bValido
                    Exit Function
                End If
            End If

        End If  

        If txtNroDoc.Text.Trim = "" Then
            MsgBox("Ingrese un nro. de documento válido", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

            If txtRSoc.Text.Trim = "" Then
                MsgBox("Ingrese una razón social válido", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

            If txtNomCom.Text.Trim = "" Then
                MsgBox("Ingrese un nombre comercial válido", vbInformation, Me.Title)
                bValido = False
                Return bValido
            End If

            If Not chkImpo.Checked And Not chkExpo.Checked Then
                MsgBox("Seleccione una actividad válido", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

            If cboPais.SelectedIndex <= 0 Then
                MsgBox("Seleccione un país.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            ElseIf cboDpto.SelectedIndex <= 0 Then
                MsgBox("Seleccione un departamento.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            ElseIf cboProvincia.SelectedIndex <= 0 Then
                MsgBox("Seleccione una provincia.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

            If Session("TipoEvento") = 0 Then  ' Agregar 

                Dim objEntidadBC As New EntidadesBC
                Dim objEntidadBE As New EntidadesBE
                Dim strRpta As String = ""
                Dim bExito As Boolean

                objEntidadBE.Codigo = ""
                objEntidadBE.Descripcion = ""
                objEntidadBE.TDocu = ""
                objEntidadBE.NDocu = ""

                objEntidadBE.Codigo = txtCodCli.Text.Trim
                objEntidadBE.Descripcion = txtRSoc.Text.Trim
                objEntidadBE.TDocu = cboTipoDoc.SelectedValue.Trim
                objEntidadBE.NDocu = txtNroDoc.Text.Trim

                'validamos el código de la entidad 
                objEntidadBE.TVal = "K"
                strRpta = ""
                bExito = objEntidadBC.ValidarEntidad(objEntidadBE)

                If Not bExito Then
                    'validamos la razón social de la entidad 
                    objEntidadBE.TVal = "R"
                    bExito = objEntidadBC.ValidarEntidad(objEntidadBE)

                    If Not bExito Then
                        If Not ChkExtranjero.Checked Then
                            'validamos el nro. documento
                            objEntidadBE.TVal = "D"
                            bExito = objEntidadBC.ValidarEntidad(objEntidadBE)
                            If bExito Then
                                MsgBox("El nro. documento del cliente ya existe.", vbInformation, Me.Title)
                                bValido = False
                            End If
                        End If
                    Else
                        MsgBox("La razón social del cliente ya existe.", vbInformation, Me.Title)
                        bValido = False
                    End If
                Else
                    MsgBox("El código del cliente ya existe.", vbInformation, Me.Title)
                    bValido = False
                End If

            End If
            Return bValido
    End Function
     
    Protected Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click
        Response.Redirect("~/Page/Comercial/Consultar_Cliente.aspx", True)
    End Sub 

    Protected Sub btnGrabar_Click(sender As Object, e As EventArgs) Handles btnGrabar.Click
        Try
            Dim objEntidadesBE As EntidadesBE
            Dim objEntidadesBC As EntidadesBC
            Dim bExito As Boolean = False
            Dim sMensaje As String = ""
            Dim sActividad As String = ""
            If Not spValidaCampos() Then
                Exit Sub
            End If
            objEntidadesBE = New EntidadesBE
            objEntidadesBE.Codigo = txtCodCli.Text.Trim
            objEntidadesBE.CodOsc = txtCodOscar.Text.Trim
            objEntidadesBE.Descripcion = txtRSoc.Text.Trim
            objEntidadesBE.NomCom = txtNomCom.Text.Trim
            objEntidadesBE.TDocu = cboTipoDoc.SelectedValue.Trim
            objEntidadesBE.NDocu = txtNroDoc.Text.Trim
            objEntidadesBE.FecAni = txtAniv.Text.Trim
            objEntidadesBE.Extranjero = IIf(ChkExtranjero.Checked, 1, 0)
            objEntidadesBE.Cliente = IIf(ChkCliente.Checked, 1, 0)
            objEntidadesBE.Estado = IIf(ChkVigente.Checked, 1, 0)
            objEntidadesBE.Observacion = txtObs.Text.Trim
            objEntidadesBE.TipCliente = cboTipoCli.SelectedValue.Trim
            If chkImpo.Checked Then
                If chkExpo.Checked Then
                    sActividad = "A"
                Else
                    sActividad = "I"
                End If
            Else
                If chkExpo.Checked Then
                    sActividad = "E"
                End If
            End If
            objEntidadesBE.Actividad = sActividad
            objEntidadesBE.MovImp = IIf(optEstaImpo.SelectedValue, 1, 0)
            objEntidadesBE.MovExp = IIf(optEstaExpo.SelectedValue, 1, 0)
            objEntidadesBE.UEjeComercialI = cboEjecVtaI.SelectedValue.Trim
            objEntidadesBE.UCusComercialI = cboCustSerI.SelectedValue.Trim
            objEntidadesBE.UEjeComercialE = cboEjecVtaE.SelectedValue.Trim
            objEntidadesBE.UCusComercialE = cboCustSerE.SelectedValue.Trim
            objEntidadesBE.Direccion = txtOfPrin.Text.Trim
            objEntidadesBE.Pais = cboPais.SelectedValue.Trim
            objEntidadesBE.Dpto = cboDpto.SelectedValue.Trim
            objEntidadesBE.Prov = cboProvincia.SelectedValue.Trim
            objEntidadesBE.Telf = txtNroTelef.Text.Trim
            objEntidadesBE.Fax = txtFax.Text.Trim
            objEntidadesBE.DFiscal = txtDomFis.Text.Trim
            objEntidadesBE.FIniActividad = txtIniAct.Text.Trim
            objEntidadesBE.CondicioFiscal = IIf(optCondDom.SelectedValue, 1, 0)
            objEntidadesBE.Persona = IIf(optTPer.SelectedValue, 1, 0)
            objEntidadesBE.Usuario = Session("idIusuario")

            objEntidadesBC = New EntidadesBC
            Dim strMensaje As String = ""

            If Session("TipoEvento") = 0 Then  ' Agregar 
                objEntidadesBC.InsertarEntidades(objEntidadesBE, bExito, sMensaje)
                MsgBox("El registro fue ingresado con éxito.", vbInformation, Me.Title)

            ElseIf Session("TipoEvento") = 1 Then  ' Modifica 
                objEntidadesBC.EditarEntidades(objEntidadesBE, bExito, sMensaje)
                MsgBox("El registro fue actualizado con éxito.", vbInformation, Me.Title)
            End If
            Response.Redirect("Consultar_Cliente.aspx", True)
            Exit Sub
        Catch ex As Exception
            'MsgBox(ex.Message, vbCritical, Me.Title)
            Exit Sub
        End Try
    End Sub
End Class